//package com.qst.order.config;
//
//@Configuration
//@EnableStateMachineFactory
//public class OrderStateMachineConfig extends StateMachineConfigurerAdapter<OrderStatusEnum, OrderEventEnum> {
//
//    @Autowired
//    private OrderStateInterceptor orderStateInterceptor;
//
//    @Override
//    public void configure(StateMachineStateConfigurer<OrderStatusEnum, OrderEventEnum> states) throws Exception {
//        states
//            .withStates()
//                .initial(OrderStatusEnum.PENDING)
//                .state(OrderStatusEnum.PENDING_PAYMENT)
//                .state(OrderStatusEnum.PAID)
//                .state(OrderStatusEnum.SHIPPED)
//                .state(OrderStatusEnum.DELIVERED)
//                .state(OrderStatusEnum.COMPLETED)
//                .end(OrderStatusEnum.CANCELLED)
//                .end(OrderStatusEnum.REFUNDED);
//    }
//
//    @Override
//    public void configure(StateMachineTransitionConfigurer<OrderStatusEnum, OrderEventEnum> transitions) throws Exception {
//        transitions
//            // 待付款 → 已支付
//            .withExternal()
//                .source(OrderStatusEnum.PENDING_PAYMENT).target(OrderStatusEnum.PAID)
//                .event(OrderEventEnum.PAY_SUCCESS)
//                .action(paySuccessAction())
//
//            // 待付款 → 已取消
//            .and()
//            .withExternal()
//                .source(OrderStatusEnum.PENDING_PAYMENT).target(OrderStatusEnum.CANCELLED)
//                .event(OrderEventEnum.CANCEL)
//                .action(cancelAction())
//
//            // 其他状态流转配置...
//    }
//
//    @Override
//    public void configure(StateMachineConfigurationConfigurer<OrderStatusEnum, OrderEventEnum> config) throws Exception {
//        config
//            .withConfiguration()
//                .autoStartup(true)
//                .listener(orderStateListener())
//            .and()
//            .withPersistence()
//                .runtimePersister(orderStateRuntimePersister());
//
//        config.addStateMachineInterceptor(orderStateInterceptor);
//    }
//
//    @Bean
//    public Action<OrderStatusEnum, OrderEventEnum> paySuccessAction() {
//        return context -> {
//            Long orderId = context.getMessage().getHeaders().get("orderId", Long.class);
//            log.info("订单支付成功，orderId: {}", orderId);
//            // 支付成功后续操作
//        };
//    }
//
//    // 其他Bean定义...
//}
